package cockpit.desarrollo.SERVICE;

import java.sql.SQLException;
import java.util.ArrayList;

import cockpit.comm.DTO.DatosException;
import cockpit.comm.DTO.ProductoDTO;
import cockpit.desarrollo.DAO.ProductoDAO;

public class ProductoSERVICE
{
    private static ProductoDAO productoDao;

    private static ProductoDAO getProductoDAO( )
    {
        if( productoDao == null )
        {
            productoDao = new ProductoDAO( );
        }
        return productoDao;
    }

    /**
     * 
     * @param idUsuario
     * @param idProducto
     * @param calificacion
     * @param opinion
     * @throws DatosException
     */
    public static void agregarReviewProducto( long idUsuario, long idProducto, int calificacion, String opinion ) throws DatosException
    {
        getProductoDAO( ).agregarReviewProducto( idUsuario, idProducto, calificacion, opinion );

    }
    /**
     * 
     * @param idUsuario
     * @param idProducto
     * @throws DatosException
     */
    public static void agregarViewProducto( long idUsuario, long idProducto ) throws DatosException
    {
        getProductoDAO( ).agregarViewProducto( idUsuario, idProducto );

    }
    /**
     * 
     * @param idUsuario
     * @param idCategoria
     * @param cantidad
     * @param costoVendedor
     * @param costoCockpit
     * @param nombreProducto
     * @param descripcionProducto
     * @param historiaProducto
     * @param productoscol
     * @throws DatosException
     */
    public static void agregarProducto( long idUsuario, long idCategoria, int cantidad, int costoVendedor, int costoCockpit, String nombreProducto, String descripcionProducto, String historiaProducto, String productoscol ) throws DatosException
    {
        getProductoDAO( ).agregarProducto( idUsuario, idCategoria, cantidad, costoVendedor, costoCockpit, nombreProducto, descripcionProducto, historiaProducto, productoscol );
    }
    /**
     * 
     * @param id
     * @return
     * @throws DatosException
     */
    public static Long eliminarProducto( Long id ) throws DatosException
    {
        return getProductoDAO( ).eliminarProducto( id );
    }
    /**
     * 
     * @param idProducto
     * @param idUsuario
     * @param idCategoria
     * @param cantidad
     * @param costoVendedor
     * @param costoCockpit
     * @param nombreProducto
     * @param descripcionProducto
     * @param historiaProducto
     * @param productoscol
     * @throws DatosException
     */
    public static void editarProducto( long idProducto, long idUsuario, long idCategoria, int cantidad, int costoVendedor, int costoCockpit, String nombreProducto, String descripcionProducto, String historiaProducto, String productoscol )
            throws DatosException
    {
        getProductoDAO( ).editarProducto( idProducto, idUsuario, idCategoria, cantidad, costoVendedor, costoCockpit, nombreProducto, descripcionProducto, historiaProducto, productoscol );
    }
    /**
     * 
     * @param idProducto
     * @param productoscol
     * @throws DatosException
     */
    public static void editarColProducto( long idProducto, String productoscol ) throws DatosException
    {
        getProductoDAO( ).editarColProducto( idProducto, productoscol );
    }
    /**
     * 
     * @param idProducto
     * @param historiaProducto
     * @throws DatosException
     */
    public static void editarHistoriaProducto( long idProducto, String historiaProducto ) throws DatosException
    {
        getProductoDAO( ).editarHistoriaProducto( idProducto, historiaProducto );
    }

    public static void editarDescripcionProducto( long idProducto, String descripcionProducto ) throws DatosException
    {
        getProductoDAO( ).editarDescripcionProducto( idProducto, descripcionProducto );

    }
    /**
     * 
     * @param idProducto
     * @param nombreProducto
     * @throws DatosException
     */
    public static void editarNombreProducto( long idProducto, String nombreProducto ) throws DatosException
    {
        getProductoDAO( ).editarNombreProducto( idProducto, nombreProducto );
    }

    /**
     * 
     * @param idProducto
     * @param costoCockpit
     * @throws DatosException
     */
    public static void editarCostoCockpitProducto( long idProducto, long costoCockpit ) throws DatosException
    {
        getProductoDAO( ).editarCostoCockpitProducto( idProducto, costoCockpit );
    }
    /**
     * 
     * @param idProducto
     * @param costoVendedor
     * @throws DatosException
     */
    public static void editarCostoVendedorProducto( long idProducto, long costoVendedor ) throws DatosException
    {
        getProductoDAO( ).editarCostoVendedorProducto( idProducto, costoVendedor );
    }
    /**
     * 
     * @param idProducto
     * @param idCategoria
     * @throws DatosException
     */
    public static void editarCategoriaProducto( long idProducto, long idCategoria ) throws DatosException
    {
        getProductoDAO( ).editarCategoriaProducto( idProducto, idCategoria );
    }
    /**
     * 
     * @param idProducto
     * @param cantidad
     * @throws DatosException
     */
    public static void editarCantidadProducto( long idProducto, long cantidad ) throws DatosException
    {
        getProductoDAO( ).editarCantidadProducto( idProducto, cantidad );
    }
    /**
     * 
     * @param Categoria
     * @return
     * @throws DatosException
     * @throws SQLException
     */
    public static ArrayList<ProductoDTO> getProductosCategoria( int Categoria ) throws DatosException, SQLException
    {
        return getProductoDAO( ).getProductosCategoria( Categoria );
    }
    /**
     * 
     * @param idusuario
     * @return
     * @throws DatosException
     * @throws SQLException
     */
    public static ArrayList<ProductoDTO> getProductosEmpresa( int idusuario ) throws DatosException, SQLException
    {
        return getProductoDAO( ).getProductosEmpresa( idusuario );
    }
    /**
     * 
     * @param idusuario
     * @return
     * @throws DatosException
     * @throws SQLException
     */
    public static ArrayList<ProductoDTO> getUltimosProductosEmpresa( int idusuario ) throws DatosException, SQLException
    {
        return getProductoDAO( ).getUltimosProductosEmpresa( idusuario );
    }
    /**
     * 
     * @return
     * @throws DatosException
     * @throws SQLException
     */
    public static ArrayList<ProductoDTO> getUltimosProductos( ) throws DatosException, SQLException
    {
        return getProductoDAO( ).getUltimosProductos( );
    }
    /**
     * 
     * @param idUsuario
     * @param nombre
     * @param ruta
     * @throws DatosException
     */
    public static void agregarImagen( long idUsuario, String nombre, String ruta ) throws DatosException
    {
        getProductoDAO( ).agregarImagen( idUsuario, nombre, ruta );
    }
    /**
     * 
     * @param idProducto
     * @param tiempoEntrega
     * @param medioEnvio
     * @param politicaDevulucion
     * @throws DatosException
     */
    public static void agregarInfoEnvio( int idProducto, int tiempoEntrega, String medioEnvio, String politicaDevulucion ) throws DatosException
    {
        getProductoDAO( ).agregarInfoEnvio( idProducto, tiempoEntrega, medioEnvio, politicaDevulucion );
    }
    /**
     * 
     * @param idProducto
     * @param marca
     * @param colores
     * @param cuidado
     * @param peso
     * @param medidas
     * @param materiales
     * @throws DatosException
     */
    public static void agregarInfoProducto( int idProducto, String marca, String colores, String cuidado, String peso, String medidas, String materiales ) throws DatosException
    {
        getProductoDAO( ).agregarInfoProducto( idProducto, marca, colores, cuidado, peso, medidas, materiales );
    }
}
